home *** CD-ROM | disk | FTP | other *** search
/ FishMarket 1.0 / FishMarket v1.0.iso / fishies / 126-150 / disk_138 / amigaline / amigaline9 < prev    next >
Text File  |  1992-05-06  |  15KB  |  486 lines

  1.             Technical Note #9
  2.              A sample keymap
  3.  
  4. SUMMARY
  5.  
  6. $ 9/0 A sample keymap
  7. $ release
  8. $ 01-Feb-88 Bryce Nesbitt / TVD
  9. $ devs:keymaps, setmap, keymap
  10. $ See Also: AmigaMail July/August 1987, AmigaLine #8
  11.  
  12.     This note gives a sample keymap.  It can be customized to map the
  13.     keyboard in any manner desired.
  14.  
  15. ----------------------------------------------------------------------------
  16. *
  17. * Sample keymap.  Can assemble to be identical to "usa1", or to do some
  18. * other neat tricks like turn the numeric pad into a hex keypad.
  19. * For the DVORAK layout, you will need to look at the "usa2" map (not
  20. * provided).
  21. *
  22. * This file was generated from a binary image that is Copyright (C)1987
  23. * Commodore-Amiga, Inc.  It is distributed as an example with the
  24. * expressed written permission of Commodore-Amiga, Inc.
  25. *
  26. *    The A500/A2000 can have the numeric keypad changed into a hex
  27. *    keypad.  The layout is:
  28. *
  29. *        A B C D
  30. *        7 8 9 E
  31. *        4 5 6 F
  32. *        1 2 3 |
  33. *        0   . |
  34. *
  35. *    The ESCAPE key and the ~` key may be reversed.
  36. *    The RETURN key may be set to repeat (the ENTER key still will not).
  37. *
  38. *   This file also can fix two glitches in the keymap as supplied by CBM:
  39. *
  40. *    The A500/A2000 numeric pad ()/*+ keys will repeat.
  41. *    The keymap no longer crashes if an attempt to execute it is made.
  42. *
  43. * This keymap supports the 5 extra keys found on the Amiga 500 and 2000
  44. * and will work on A1000s as well.  As of V1.2, Kickstart had not been
  45. * updated to know about the keys directly, or to return the "NUMERICPAD"
  46. * quailifer when they are pressed.
  47. *
  48. * Commodore-Amiga made what might be refered to as a "tactical error" with
  49. * keymaps... it is slightly easier to just use the raw keys rather than
  50. * converting them.  This is *not* an excuse for not converting, however.
  51. *
  52. * File format hacked out by Bryce Nesbitt,  bryce@hoser.berkeley.EDU
  53. * ucbvax!hoser!bryce (or replace "hoser" with "cogsci")  BIX: mleeds
  54. * (temporarily)
  55. *
  56. * Cheers!
  57. ;
  58. ;This flag is valid with any others.
  59. ;
  60. HEXPAD        EQU 1        ;Turn the numeric keypad into a hex keypad?
  61. ;
  62. ;You must set one and only one of these flags!
  63. ;
  64. OLDMAP        EQU 0        ;assemble the same as usa1 keymap?
  65.  
  66. FIXUP        EQU 0        ;Should I fix the glitches in the CBM keymap?
  67. RETURNREP   EQU 1        ;Do the above and have return repeat?
  68. SWAPESC     EQU 0        ;Do the above and swap the ESC and ~` keys?
  69.  
  70. *
  71. * Keymaps are loaded with the LoadSeg() function.  This provides
  72. * all of the automatic relocation features.  The file starts off with
  73. * a KeyMapNode structure.  Since the first long of this (LN_SUCC) will
  74. * be dynamically set after the map is loaded, we can safely insert a bit of
  75. * code to drop harmlessly back to DOS in case someone tries to execute the
  76. * keymap (the unmodified keymap would crash).
  77. *
  78. ;
  79. ; STRUCTURE  KeyMapNode,0
  80. ;    STRUCT  kn_Node,LN_SIZE     ; includes name of keymap
  81. ;    STRUCT  kn_KeyMap,km_SIZEOF ; I suspect)
  82. ;    LABEL   kn_SIZEOF
  83. ;
  84. ; STRUCTURE  KeyMap,0
  85. ;   APTR  km_LoKeyMapTypes
  86. ;   APTR  km_LoKeyMap
  87. ;   APTR  km_LoCapsable
  88. ;   APTR  km_LoRepeatable
  89. ;   APTR  km_HiKeyMapTypes
  90. ;   APTR  km_HiKeyMap
  91. ;   APTR  km_HiCapsable
  92. ;   APTR  km_HiRepeatable
  93. ;   LABEL km_SIZEOF
  94. ;
  95.  
  96.     CODE
  97.  
  98.     IFNE OLDMAP
  99.       DC.L  $00000000        ;Crash the system.
  100.     ENDC
  101.     IFEQ OLDMAP
  102.       MOVEQ.L #-1,D0        ;Say "I'm not a program"
  103.       RTS            ;return to DOS with that revelation.
  104.     ENDC
  105.  
  106.     DC.L  $00000000
  107.     DC.W  $0000
  108.     DC.L  KeyMapName
  109.  
  110.     DC.L  LoKeyMapTypes
  111.     DC.L  LoKeyMap
  112.     DC.L  LoCapsable
  113.     DC.L  LoRepeatable
  114.     DC.L  HiKeyMapTypes
  115.     DC.L  HiKeyMap
  116.     DC.L  HiCapsable
  117.     DC.L  HiRepeatable
  118.  
  119. ;
  120. ;These tables are bitmaps (bits are in the same order as everything else)
  121. ;
  122. ;LoCapsable:    DC.B  $00,$00,$FF,$03,$FF,$01,$FE,$00
  123. ;HiCapsable:    DC.B  $00,$00,$00,$00,$00,$00,$00
  124. ;LoRepeatable:    DC.B  $FF,$BF,$FF,$EF,$FF,$EF,$FF,$F7
  125. ;HiRepeatable:    DC.B  $47,$F4,$FF,$03,$00,$00,$00
  126.  
  127.  
  128. LoCapsable:    DC.B  $00,$00,$FF,$03,$FF,$01,$FE,$00
  129. HiCapsable:    DC.B  $00,$00,$00,$00,$00,$00,$00
  130.     IFEQ SWAPESC
  131. LoRepeatable:  DC.B  $FF,$BF,$FF,$EF,$FF,$EF,$FF,$F7
  132.     ENDC
  133.     IFNE SWAPESC
  134. LoRepeatable:  DC.B  $FE,$BF,$FF,$EF,$FF,$EF,$FF,$F7
  135.     ENDC
  136.     IFNE OLDMAP
  137. HiRepeatable:  DC.B  $47,$F4,$FF,$03,$00,$00,$00
  138.     ENDC
  139.     IFNE FIXUP
  140. HiRepeatable:  DC.B  $47,$F4,$FF,$7F,$00,$00,$00
  141.     ENDC
  142.     IFNE RETURNREP
  143. HiRepeatable:  DC.B  $57,$F4,$FF,$7F,$00,$00,$00
  144.     ENDC
  145.     IFNE SWAPESC
  146. HiRepeatable:  DC.B  $77,$F4,$FF,$7F,$00,$00,$00
  147.     ENDC
  148.  
  149. ;
  150. ; What follows is the types table.  This determmines how the actual
  151. ; keymap table data will be interpreted.
  152. ;
  153. ; KC_NOQUAL   EQU   $00
  154. ; KCF_SHIFT   EQU   $01
  155. ; KCF_ALT     EQU   $02
  156. ; KCF_CONTROL EQU   $04
  157. ; KC_VANILLA  EQU   $07     ; note that SHIFT+ALT+CTRL is VANILLA
  158. ; KCF_DOWNUP  EQU   $08     ; ???Don't know... gives "qQ" if applied to q.
  159. ; KCF_DEAD    EQU   $20     ; Indicates dead information is available
  160. ; KCF_STRING  EQU   $40     ; Key may actually print out a string
  161. ; KCF_NOP     EQU   $80     ; Don't map this key
  162. ;
  163. LoKeyMapTypes:
  164.   IFNE SWAPESC
  165.     DC.B  $02,$03,$07,$03,$03,$03,$07,$03   ; `  1  2  3  4  5  6  7
  166.   ENDC
  167.   IFEQ SWAPESC
  168.     DC.B  $07,$03,$07,$03,$03,$03,$07,$03   ; `  1  2  3  4  5  6  7
  169.   ENDC
  170.     DC.B  $03,$03,$03,$07,$01,$07,$80,$00   ; 8  9  0  -  =  \      (0)
  171.     DC.B  $07,$07,$27,$07,$07,$27,$27,$27   ; q  w  e  r  t  y    u  i
  172.     DC.B  $27,$07,$07,$07,$80,$00,$00,$00   ; o  p  [  ]    (1)(2)(3)
  173.     DC.B  $27,$07,$07,$27,$27,$27,$27,$27   ; a  s  d  f  g  h    j  k
  174.     DC.B  $07,$01,$01,$80,$80,$00,$00,$00   ; l  ;  '       (4)(5)(6)
  175.     DC.B  $03,$07,$07,$07,$07,$07,$27,$07   ;     z  x  c  v  b    n  m
  176.     DC.B  $01,$01,$01,$80,$00,$00,$00,$00   ; ,  .  /      . (7)(8)(9)
  177.  
  178. HiKeyMapTypes:
  179.   IFNE SWAPESC
  180.     DC.B  $22,$00,$41,$00,$04,$07,$00,$80   ;SPC  BS   TAB  ENTR RETN ESC  DEL    NONE
  181.   ENDC
  182.   IFEQ SWAPESC
  183.     DC.B  $22,$00,$41,$00,$04,$02,$00,$80   ;SPC  BS   TAB  ENTR RETN ESC  DEL    NONE
  184.   ENDC
  185.     DC.B  $80,$80,$00,$80,$41,$41,$41,$41   ;        -     UP   DOWN RGHT LEFT
  186.     DC.B  $41,$41,$41,$41,$41,$41,$41,$41   ;F1   F2   F3   F4     F5   F6   F7    F8
  187.     DC.B  $41,$41,$03,$03,$03,$03,$03,$40   ;F9   F10                HELP
  188.     DC.B  $80,$80,$80,$80,$80,$80,$80,$80   ;LSFT RSFT CAPS CTRL LALT RALT LAMG RAMG
  189.     DC.B  $80,$80,$80,$80,$80,$80,$80,$80   ;
  190.     DC.B  $80,$80,$80,$80,$80,$80,$80,$80   ;
  191. ;
  192. ;The actual map!  4 bytes per key.  This may be data or a pointer, depending
  193. ;on the types table entry for it (see above).
  194. ;
  195. LoKeyMap:
  196.   IFNE SWAPESC
  197.     DC.L  $00009B1B,$21B92131         ; '~`~`!',$B9,'!1'
  198.   ENDC
  199.   IFEQ SWAPESC
  200.     DC.L  $7E607E60,$21B92131         ; '~`~`!',$B9,'!1'
  201.   ENDC
  202.     DC.L  $40B24032,$23B32333         ; '@',$B2,'@2#',$B3,'#3'
  203.     DC.L  $24A22434,$25BC2535         ; '$',$A2,'$4%',$BC,'%5'
  204.     DC.L  $5EBD5E36,$26BE2637         ; '^',$BD,'^6&',$BE,'&7'
  205.     DC.L  $2AB72A38,$28AB2839         ; '*',$B7,'*8(',$AB,'(9'
  206.     DC.L  $29BB2930,$5F2D5F2D         ; ')',$BB,')0_-_-'
  207.     DC.L  $2B3D2B3D,$7C5C7C5C         ; '+=+=|\|\'
  208.     DC.L  $00000000,$00000030         ; $00,$00,$00,$00,$00,$00,$00,'0'
  209.     DC.L  $C5E55171,$B0B05777         ; $C5,$E5,'Qq',$B0,$B0,'Ww'
  210.     DC.L  keydata12e
  211.     DC.L  $AEAE5272,$DEFE5474         ; $AE,$AE,'Rr',$DE,$FE,'Tt'
  212.     DC.L  keydata15y
  213.     DC.L  keydata16u
  214.     DC.L  keydata17i
  215.     DC.L  keydata18o
  216.     DC.B  $B6,$B6,$50,$70,$7B,$5B,$7B,$5B     ; $B6,$B6,'Pp{[{['
  217.     DC.B  $7D,$5D,$7D,$5D,$00,$00,$00,$00     ; '}]}]',$00,$00,$00,$00
  218.     DC.B  $00,$00,$00,$31,$00,$00,$00,$32     ; $00,$00,$00,'1',$00,$00,$00,'2'
  219.     DC.B  $00,$00,$00,$33             ; $00,$00,$00,'3'
  220.     DC.L  keydata20a
  221.     DC.B  $A7,$DF,$53,$73,$D0,$F0,$44,$64     ; $A7,$DF,'Ss',$D0,$F0,'Dd'
  222.     DC.L  keydata23f
  223.     DC.L  keydata24g
  224.     DC.L  keydata25h
  225.     DC.L  keydata26j
  226.     DC.L  keydata27k
  227.     DC.B  $A3,$A3,$4C,$6C,$3A,$3B,$3A,$3B     ; $A3,$A3,'Ll:;:;'
  228.     DC.B  $22,$27,$22,$27,$00,$00,$00,$00     ; '"'"'',$00,$00,$00,$00
  229.     DC.B  $00,$00,$00,$00,$00,$00,$00,$34     ; $00,$00,$00,$00,$00,$00,$00,'4'
  230.     DC.B  $00,$00,$00,$35,$00,$00,$00,$36     ; $00,$00,$00,'5',$00,$00,$00,'6'
  231.     DC.B  $BB,$AB,$3E,$3C,$AC,$B1,$5A,$7A     ; $BB,$AB,'><',$AC,$B1,'Zz'
  232.     DC.B  $F7,$D7,$58,$78,$C7,$E7,$43,$63     ; $F7,$D7,'Xx',$C7,$E7,'Cc'
  233.     DC.B  $AA,$AA,$56,$76,$BA,$BA,$42,$62     ; $AA,$AA,'Vv',$BA,$BA,'Bb'
  234.     DC.L  keydata36n
  235.     DC.B  $BF,$B8,$4D,$6D,$3C,$2C,$3C,$2C     ; $BF,$B8,'Mm<,<,'
  236.     DC.B  $3E,$2E,$3E,$2E,$3F,$2F,$3F,$2F     ; '>.>.?/?/'
  237.     DC.B  $00,$00,$00,$00,$00,$00,$00,$2E     ; $00,$00,$00,$00,$00,$00,$00,'.'
  238.     DC.B  $00,$00,$00,$37,$00,$00,$00,$38     ; $00,$00,$00,'7',$00,$00,$00,'8'
  239.     DC.B  $00,$00,$00,$39             ; $00,$00,$00,'9'
  240.  
  241. HiKeyMap:
  242.     DC.L  keydata40space        ;SPC
  243.     DC.L  $00000008            ;DEL
  244.     DC.L  keydata42tab            ;TAB
  245.     DC.L  $0000000D,$00000A0D        ;ENT RET
  246.   IFNE SWAPESC
  247.     DC.L  $7E607E60,$0000007F        ;ESC DEL
  248.   ENDC
  249.   IFEQ SWAPESC
  250.     DC.L  $00009B1B,$0000007F        ;ESC DEL
  251.   ENDC
  252.     DC.L  $00000000,$00000000
  253.     DC.L  $00000000
  254.   IFEQ    HEXPAD
  255.     DC.L  $0000002D            ; -
  256.   ENDC
  257.     IFNE  HEXPAD
  258.     DC.L  $2D2D4565            ; --Ee
  259.   ENDC
  260.     DC.L  $00000000
  261.     DC.L  keydata4Cup
  262.     DC.L  keydata4Ddown
  263.     DC.L  keydata4Eright
  264.     DC.L  keydata4Fleft
  265.     DC.L  L00001B            ; F1
  266.     DC.L  L00001C            ; ...
  267.     DC.L  L00001D
  268.     DC.L  L00001E
  269.     DC.L  L00001F
  270.     DC.L  L000020
  271.     DC.L  L000021
  272.     DC.L  L000022
  273.     DC.L  L000023            ; ...
  274.     DC.L  L000024            ; F10
  275. ;
  276. ;These are the definitions for the 5 extra keys the A500/A2000 have,
  277. ;but the A1000 does not.
  278. ;
  279.   IFEQ    HEXPAD
  280.     DC.B  $28,$28,$28,$28,$29,$29,$29,$29     ; '(((())))'
  281.     DC.B  $2F,$2F,$2F,$2F,$2A,$2A,$2A,$2A     ; '////****'
  282.     DC.B  $2B,$2B,$2B,$2B             ; '++++'
  283.   ENDC
  284.   IFNE    HEXPAD
  285.     DC.B  $28,$28,$41,$61,$29,$29,$42,$62     ; '((Aa))Bb'
  286.     DC.B  $2F,$2F,$43,$63,$2A,$2A,$44,$64     ; '//Cc**Dd'
  287.     DC.B  $2B,$2B,$46,$66             ; '++Ff'
  288.   ENDC
  289.     DC.L  keydata5Fhelp
  290.     DC.L  $00000000,$00000000
  291.     DC.L  $00000000,$00000000
  292.     DC.L  $00000000,$00000000
  293.     DC.L  $00000000,$00000000
  294.     DC.L  $00000000,$00000000
  295.     DC.L  $00000000,$00000000
  296.     DC.L  $00000000,$00000000
  297.     DC.L  $00000000,$00000000
  298.     DC.L  $00000000,$00000000
  299.     DC.L  $00000000,$00000000
  300.     DC.L  $00000000,$00000000
  301.     DC.L  $00000000,$00000000
  302.  
  303. ;
  304. ;"dead" keys let you add accents to charaters.  From a CLI press Alt-K.
  305. ;Notice the "dead" response.  Now type "a".  It should come out with
  306. ;an umlaut.
  307. ;
  308. ;The "k" is one of the dead keys.  The "a" is a deadable key.
  309. ;
  310.  
  311. ;------ Dead Prefix Bytes
  312. ; DPB_MOD        EQU $00
  313. ; DPF_MOD        EQU $01
  314. ; DPB_DEAD        EQU $03
  315. ; DPF_DEAD        EQU $08
  316. ;
  317. ; DP_2DINDEXMASK    EQU $0F    ; mask for index for 1st of two dead keys
  318. ; DP_2DFACSHIFT     EQU $04    ; shift for factor for 1st of two dead keys
  319. ;
  320. ; For a full description of Dead keys, see AmigaMail July/August 1987
  321. ;
  322.  
  323. ;
  324. ; These are all of the dead keys.
  325. ;
  326. keydata23f:    ;accent acute=1
  327.     DC.B  $00,$66,$00,$46,$08,$01,$08,$01     ; $00,'f',$00,'F',$08,$01,$08,$01
  328.     DC.B  $00,$06,$00,$06,$00,$86,$00,$86
  329.  
  330. keydata24g:    ;accent grave=2
  331.     DC.B  $00,$67,$00,$47,$08,$02,$08,$02     ; $00,'g',$00,'G',$08,$02,$08,$02
  332.     DC.B  $00,$07,$00,$07,$00,$87,$00,$87
  333.  
  334. keydata25h:    ;caret=3
  335.     DC.B  $00,$68,$00,$48,$08,$03,$08,$03     ; $00,'h',$00,'H',$08,$03,$08,$03
  336.     DC.B  $00,$08,$00,$08,$00,$88,$00,$88
  337.  
  338. keydata26j:    ;circumflex=4
  339.     DC.B  $00,$6A,$00,$4A,$08,$04,$08,$04     ; $00,'j',$00,'J',$08,$04,$08,$04
  340.     DC.B  $00,$0A,$00,$0A,$00,$8A,$00,$8A
  341.  
  342. keydata27k:    ;umlaut=5
  343.     DC.B  $00,$6B,$00,$4B,$08,$05,$08,$05     ; $00,'k',$00,'K',$08,$05,$08,$05
  344.     DC.B  $00,$0B,$00,$0B,$00,$8B,$00,$8B
  345.  
  346.  
  347. ;
  348. ; Here follows deadable keys
  349. ;
  350. keydata20a:
  351.     DC.B  $01,$10        ;unshifted accent "a" table starts at $10
  352.     DC.B  $01,$16        ;shifted accent "A" table starts at $16
  353.     DC.B  $00,$E6,$00,$C6,$00,$01,$00,$01,$00,$81,$00,$81   ;normal keys
  354.  
  355.     ;dead with- nothing,accent acute,accent grave,caret,circumflex,umlaut
  356.     DC.B  $61,$E1,$E0,$E2,$E3,$E4   ;'a'
  357.     DC.B  $41,$C1,$C0,$C2,$C3,$C4   ;'A'
  358.  
  359. keydata12e:
  360.     DC.B  $01,$10
  361.     DC.B  $01,$16,$00,$A9,$00,$A9
  362.     DC.B  $00,$05,$00,$05,$00,$85,$00,$85
  363.     DC.B  $65,$E9,$E8,$EA,$65,$EB,$45,$C9     ; 'e',$E9,$E8,$EA,'e',$EB,'E',$C9
  364.     DC.B  $C8,$CA,$45,$CB             ; $C8,$CA,'E',$CB
  365.  
  366. keydata17i:
  367.     DC.B  $01,$10,$01,$16,$00,$A1,$00,$A6
  368.     DC.B  $00,$09,$00,$09,$00,$89,$00,$89
  369.     DC.B  $69,$ED,$EC,$EE,$69,$EF,$49,$CD     ; 'i',$ED,$EC,$EE,'i',$EF,'I',$CD
  370.     DC.B  $CC,$CE,$49,$CF             ; $CC,$CE,'I',$CF
  371.  
  372. keydata36n:
  373.     DC.B  $01,$10,$01,$16,$00,$AD,$00,$AF
  374.     DC.B  $00,$0E,$00,$0E,$00,$8E,$00,$8E
  375.     DC.B  $6E,$6E,$6E,$6E,$F1,$6E,$4E,$4E     ; 'nnnn',$F1,'nNN'
  376.     DC.B  $4E,$4E,$D1,$4E             ; 'NN',$D1,'N'
  377.  
  378. keydata18o:
  379.     DC.B  $01,$10,$01,$16,$00,$F8,$00,$D8
  380.     DC.B  $00,$0F,$00,$0F,$00,$8F,$00,$8F
  381.     DC.B  $6F,$F3,$F2,$F4,$F5,$F6,$4F,$D3     ; 'o',$F3,$F2,$F4,$F5,$F6,'O',$D3
  382.     DC.B  $D2,$D4,$D5,$D6
  383.  
  384. keydata16u:
  385.     DC.B  $01,$10,$01,$16,$00,$B5,$00,$B5
  386.     DC.B  $00,$15,$00,$15,$00,$95,$00,$95
  387.     DC.B  $75,$FA,$F9,$FB,$75,$FC,$55,$DA     ; 'u',$FA,$F9,$FB,'u',$FC,'U',$DA
  388.     DC.B  $D9,$DB,$55,$DC             ; $D9,$DB,'U',$DC
  389.  
  390. keydata15y:
  391.     DC.B  $01,$10,$01,$16,$00,$A4,$00,$A5
  392.     DC.B  $00,$19,$00,$19,$00,$99,$00,$99
  393.     DC.B  $79,$FD,$79,$79,$79,$FF,$59,$DD     ; 'y',$FD,'yyy',$FF,'Y',$DD
  394.     DC.B  $59,$59,$59,$59             ; 'YYYY'
  395.  
  396. keydata40space:
  397.     DC.B  $01,$04,$00,$A0,$20,$B4,$60,$5E     ; $01,$04,$00,$A0,' ',$B4,'`^'
  398.     DC.B  $7E,$A8                 ; '~',$A8
  399.  
  400. ;
  401. ; Miscelaneous string output keys
  402. ;
  403. ;
  404. keydata42tab:
  405.     DC.B  $01,$04,$02,$05,$09,$9B,$5A         ; $01,$04,$02,$05,$09,$9B,'Z'
  406.  
  407. keydata4Cup:    ;(Cursor up)
  408.     DC.B  $02,$04,$02,$06,$9B,$41,$9B,$54     ; $02,$04,$02,$06,$9B,'A',$9B,'T'
  409.  
  410. keydata4Ddown:
  411.     DC.B  $02,$04,$02,$06,$9B,$42,$9B,$53     ; $02,$04,$02,$06,$9B,'B',$9B,'S'
  412.  
  413. keydata4Eright:
  414.     DC.B  $02,$04,$03,$06,$9B,$43,$9B,$20     ; $02,$04,$03,$06,$9B,'C',$9B,' '
  415.     DC.B  $40                     ; '@'
  416.  
  417. keydata4Fleft:
  418.     DC.B  $02,$04,$03,$06,$9B,$44,$9B,$20     ; $02,$04,$03,$06,$9B,'D',$9B,' '
  419.     DC.B  $41                     ; 'A'
  420.  
  421. ;
  422. ; Here start the function keys.  These are all string output keys
  423. ;
  424. ; The first byte is the length of the string.
  425. ; The second byte is the offset where the string starts at.
  426. ; This is repeated for each needed string.
  427. ; Then follows the actual data.
  428. ;
  429. L00001B:
  430.     DC.B  $03,$04        ; 3 bytes long, 4 bytes from start (0~)
  431.     DC.B  $04,$07        ; 4 bytes long, 7 bytes from start (10~)
  432.     DC.B  $9B,$30,$7E        ; 0~
  433.     DC.B  $9B,$31,$30,$7E   ; 10~
  434.  
  435. L00001C:
  436.     DC.B  $03,$04,$04,$07,$9B,$31,$7E,$9B     ; $03,$04,$04,$07,$9B,'1~',$9B
  437.     DC.B  $31,$31,$7E                 ; '11~'
  438.  
  439. L00001D:
  440.     DC.B  $03,$04,$04,$07,$9B,$32,$7E,$9B     ; $03,$04,$04,$07,$9B,'2~',$9B
  441.     DC.B  $31,$32,$7E                 ; '12~'
  442.  
  443. L00001E:
  444.     DC.B  $03,$04,$04,$07,$9B,$33,$7E,$9B     ; $03,$04,$04,$07,$9B,'3~',$9B
  445.     DC.B  $31,$33,$7E                 ; '13~'
  446.  
  447. L00001F:
  448.     DC.B  $03,$04,$04,$07,$9B,$34,$7E,$9B     ; $03,$04,$04,$07,$9B,'4~',$9B
  449.     DC.B  $31,$34,$7E                 ; '14~'
  450.  
  451. L000020:
  452.     DC.B  $03,$04,$04,$07,$9B,$35,$7E,$9B     ; $03,$04,$04,$07,$9B,'5~',$9B
  453.     DC.B  $31,$35,$7E                 ; '15~'
  454.  
  455. L000021:
  456.     DC.B  $03,$04,$04,$07,$9B,$36,$7E,$9B     ; $03,$04,$04,$07,$9B,'6~',$9B
  457.     DC.B  $31,$36,$7E                 ; '16~'
  458.  
  459. L000022:
  460.     DC.B  $03,$04,$04,$07,$9B,$37,$7E,$9B     ; $03,$04,$04,$07,$9B,'7~',$9B
  461.     DC.B  $31,$37,$7E                 ; '17~'
  462.  
  463. L000023:
  464.     DC.B  $03,$04,$04,$07,$9B,$38,$7E,$9B     ; $03,$04,$04,$07,$9B,'8~',$9B
  465.     DC.B  $31,$38,$7E                 ; '18~'
  466.  
  467. L000024:
  468.     DC.B  $03,$04,$04,$07,$9B,$39,$7E,$9B     ; $03,$04,$04,$07,$9B,'9~',$9B
  469.     DC.B  $31,$39,$7E                 ; '19~'
  470.  
  471. keydata5Fhelp:
  472.     DC.B  $03,$02,$9B,$3F,$7E             ; $03,$02,$9B,'?~'
  473.  
  474. KeyMapName:
  475.  
  476.     IFNE  OLDMAP
  477.      DC.B  'usa1',0
  478.     ENDC
  479.     IFEQ  OLDMAP
  480.      DC.B  'custom_usa1',0
  481.     ENDC
  482.     CNOP  0,2
  483.     END
  484.  
  485.  
  486.